﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void checkBox4_CheckedChanged(object sender, EventArgs e)
        {
            toolTip1.IsBalloon = true;
            toolTip1.SetToolTip(checkBox4, "ID самолета: 1234\n" + "Вместимость самолета: 150");
        }


        private void checkBox2_CheckedChanged_1(object sender, EventArgs e)
        {
            toolTip1.IsBalloon = true;
            toolTip1.SetToolTip(checkBox2, "ID самолета: 35465\n" + "Вместимость самолета: 500");
        }


        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            toolTip2.IsBalloon = true;
            toolTip2.SetToolTip(textBox1, "Введите число создаваемых объектов");
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            toolTip2.IsBalloon = true;
            toolTip2.SetToolTip(textBox2, "Введите число создаваемых объектов");

        }

        private void create_button1_Click(object sender, EventArgs e)
        {
            int a = Convert.ToInt16(textBox1.Text);
            int b = Convert.ToInt16(textBox2.Text);
            int n = a + b;

            List<Airs> airList = new List<Airs>();
            Creator[] creators = new Creator[n];


            if (checkBox4.Checked || a != 0)
            {
                for (int i = 0; i < a; i++)
                { creators[i] = new BoeingCreator(); }   
            }

            if (checkBox2.Checked || b != 0)
            {
                for (int i = a; i < n ; i++)
                { creators[i] = new AirBusCreator(); }
            }


            foreach (Creator cr in creators)
            {
                if (cr is BoeingCreator)
                    airList.Add(cr.FactoryMethod("Boeing 747-777", 1234, 150));

                if (cr is AirBusCreator)
                    airList.Add(cr.FactoryMethod("Airbus A380-800", 35465, 500));

            }

            if (label2.Text == "Объекты успешно созданы!!!") { label2.Text.Remove(0); }
            label2.Text = "Объекты успешно созданы!!!";
            textBox4.Clear();
            textBox4.Text = Convert.ToString(Summa(airList));
            print_file(airList, n);
        }



        static void print_file(List<Airs> airList, int n)
        {
            StreamWriter output = new StreamWriter("output.cs");
            for (int i = 0; i < n; i++)
            {
                output.WriteLine("Обьект класса {0};\n" +
                    "Название: {1};\n" +
                    "ID самолета: {2};\n" +
                    "Вместимость самолета: {3};\n",
                    airList[i].GetType().Name,
                    airList[i].Name,
                    airList[i].ID,
                    airList[i].Total_passenger_capacity,
                    "\n");
            }
            output.Close();
        }


        private decimal Summa(List<Airs> airList)
        {
           
            decimal total_sum = 0;
            decimal[] sum = new decimal[airList.Count];
            for (int i = 0; i <airList.Count ; i++)
            {
                sum[i] = airList[i].Total_passenger_capacity;
                total_sum += sum[i];
            }

            return total_sum;
        }

    }

    }


